package com.crane.oss.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.crane.common.core.dto.SessParty;
import com.crane.common.core.dto.SessUser;
import com.crane.oss.sys.bean.request.role.AddRoleRequest;
import com.crane.oss.sys.bean.request.role.QueryRoleRequest;
import com.crane.oss.sys.bean.request.role.UpdateRoleRequest;
import com.crane.oss.sys.bean.resp.RoleBean;
import com.crane.oss.sys.bean.resp.UserBean;

import java.util.List;

/**
 * 角色信息
 *
 * @author bealon
 * @email ccsu123456@qq.com
 * @date 2018年12月28日 19时42分58秒
 */
public interface RoleService {
    /**
     * 根据id查询
     *
     * @param roleId
     * @return
     * @
     */
    RoleBean queryRole(Long roleId);

    /**
     * 查询角色列表
     *
     * @param request
     * @return
     * @
     */
    IPage<RoleBean> queryList(QueryRoleRequest request);

    /**
     * 保存角色
     *
     * @param request
     * @param opUser
     * @
     */
    void save(AddRoleRequest request, SessUser opUser);

    /**
     * 修改角色
     *
     * @param request
     * @param opUser
     * @return
     * @
     */
    void update(UpdateRoleRequest request, SessUser opUser);

    /**
     * 删除角色
     *
     * @param roleId
     * @param opUser
     * @
     */
    void delete(Long roleId, SessUser opUser);

    /**
     * 查询当前用户所属有效角色列表
     *
     * @param userBean
     * @return
     */
    List<RoleBean> getUserRole(UserBean userBean);

    /**
     * 验证用户角色是当前操作人创建的角色,
     * 当添加下级机构人员时候，角色为机构类型对应的角色
     *
     * @param roleList
     * @param userId
     */
    void validatorRole(List<Long> roleList, Long userId);

    /**
     * 查询当前用户创建的角色列表
     *
     * @param user
     * @return
     */
    List<RoleBean> queryRoleListByCreateUser(SessUser user, SessParty party);

    /**
     * 查询角色信息，以及该角色下的菜单信息
     *
     * @param roleId
     * @return
     * @
     */
    RoleBean queryRoleAndMenuList(Long roleId, SessUser opUser);
}
